package com.mzx.javase.集合;

import java.util.*;

/**
 * @Description:Collection集合常用的方法
 * @Date: 2022/7/1 9:55
 * @Author: MarKing
 */
public class CollectionTest01 {
    public static void main(String[] args) {
        /**
         * 所有单列集合的父接口是Collection，Collection接口继承了Iterable接口，并实现了Iterator方法
         * arrayList初始化容量是10，扩容机制：1.5倍
         * 放到集合中的元素都是存放的内存地址，基本数据类型-》向上转型
         */
        Collection collection = new ArrayList(10);
        collection.add(1);
        collection.add(2);
//        System.out.println(collection);
        collection.add(true);
        /**
         * 集合初始化时，可以直接传另一个集合，完成初始化，
         * 同时也可以完成集合的转化，如hashSet->arrayList
         */
//        Collection collection1 = new LinkedList<>(collection);
        Collection collection1 = new LinkedList<>();
        collection1.add("原有数据");
        collection1.addAll(collection);
        System.out.println("collection1:"+collection1);
        collection1.remove(2);
        collection1.add(2);

        /**
         * contains(Object o)比较集合中是否包含某个元素，调用的是元素euqals方法，如果需要比较自定义对象，需要重写equals方法
         */
        boolean contains = collection.contains(1);
        System.out.println("contains:"+contains);

        /**
         * containsAll(Collection c)用于比较两个集合的内容是否完全相同，比较的也是equals方法结果
         */
        boolean containsAll = collection.containsAll(collection1);
        System.out.println("containsAll:"+containsAll);

        /**
         * 清空集合
         */
//        collection1.clear();

        /**
         * 获取集合中元素个数
         */
        int size = collection1.size();
        System.out.println("collection1的元素个数："+size);
        /**
         * 集合转数组
         */
        Object[] objects = collection1.toArray();
        System.out.println("collection1转数组之后结果为："+ Arrays.toString(objects));

        Collection c3 = new HashSet(10);
        c3.add(1);
        c3.add(true);

        /**
         * 取两个集合的交集,剩下的元素为交集元素内容
         */
        boolean b = collection.retainAll(c3);
        System.out.println("取完交集之后的collection为："+collection);


    }
}
